#ifndef VOLEUR_H
#define VOLEUR_H 1

#include "Classe.h"

using namespace std;

/**
 * Cette classe implémente le clerc de l'univers AD&D.
 * @author Johan "Solo" Luisier
 */
class Voleur : public Classe
{
 private:
  static const vector<unsigned> comp_base;
 protected:
  static const unsigned nbrCompetences, /**< Nombre de compétences disponibles */
    nbrRestrictions, /**<  Nombre de restritions disponibles */
    ppAlloues; /**< Nombre de pp alloués. */
  static const vector<CompetenceClasse> Comp; /**< Liste de restrictions @see ListCom */
  /**
   * Ensemble des prérequis sur les traits.
   */
  static const vector< Prerequis > Limites;
  /**
   * Ensembles des Races admises.
   */
  static const set< string > RacesAdmises;
  void calculNiveau();
  unsigned calculeTAc0() const;
  void calculNivMag();
 public:
  Voleur( unsigned xp, const vector< unsigned >& trait,
	  unsigned& PP, const string& race );
  Voleur( unsigned xp );
  Voleur(  const bool& UI );
  Voleur( Classe *ptr );
  ~Voleur();
  void appliquerModif( const string& nomRace, const unsigned& dexerite );
  void augmenterTalents( const string& nomRace,
			 const vector< unsigned >& traits,
			 const bool& lvl_up = true );
  void js(unsigned *tab) const;
  void prixAcces(map<string, unsigned>*& Map) const;
  unsigned getPourcent(const bool& lvlUp = true) const;
  string getScoreAdditionnel(const unsigned& i) const;
  unsigned aSpecialisation() const;
};

#endif
